package com.belencarrasco.serviciopedidoscliente;

import java.io.IOException;
import java.util.ArrayList;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import com.belencarrasco.encrip.Encripter;
import com.google.gson.JsonObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

/**
 * @author Belen
 *
 */
public class UpdateEstadoActivity extends Activity {

	private String URL = Constantes.HOST + "/ServicioPedidosSoap/services/ServicioPedidosORMWS";
	private String NAMESPACE = "http://ws.orm.belencarrasco.com";
	Pedido pedido;
	private EditText mesa;
	private EditText descripcion;
	private CheckBox estado;
	
	/* (non-Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_update_pedido);
		
		mesa = (EditText) findViewById(R.id.editMesaUpdate);//editMesaUpdate);
		descripcion = (EditText) findViewById(R.id.editDescripcionUpdate);//editDescripcionUpdate);
		estado = (CheckBox) findViewById(R.id.checkEstadoUpdate);
		
		Pedido pedido = new Pedido();

		pedido.setId_pedido(getIntent().getExtras().getInt("id"));
		pedido.setMesa(getIntent().getExtras().getSerializable("mesa").toString());
		pedido.setDescripcion(getIntent().getExtras().getSerializable("descripcion").toString());
		pedido.setEstado(getIntent().getExtras().getInt("estado"));

		Log.d("", pedido.toString());
		mesa.setText(pedido.getMesa());
		descripcion.setText(pedido.getDescripcion());
		estado.setChecked("".equals(pedido.getEstado()));
		

	}
	
	/**
	 * Metodo que da funcionalidad al boton que actualiza datos en una interfaz android
	 * @param v
	 */
	public void guardarCambio(View v){
		
		String encript = "";
		
		JsonObject jsonObjectPedido = new JsonObject();
		jsonObjectPedido.addProperty("mesa", mesa.getText().toString());
		jsonObjectPedido.addProperty("descripcion", descripcion.getText().toString());
		jsonObjectPedido.addProperty("estado", estado.isChecked() ? 1 : 0);
	
		encript = Encripter.encripter(jsonObjectPedido.toString());
		
		Log.d("",jsonObjectPedido.toString());
		new UpdatePedidoBackground().execute(jsonObjectPedido.toString());
	}
	

	class UpdatePedidoBackground extends AsyncTask<String, Void, String>{

		private ProgressDialog progressDialog;

		/* (non-Javadoc)
		 * @see android.os.AsyncTask#onPreExecute()
		 */
		@Override
		protected void onPreExecute() {
			progressDialog = ProgressDialog.show(
					UpdateEstadoActivity.this,
					"Pedidos", 
					"Espere mientras se esta actualizando el pedido...", 
					true);
			super.onPreExecute();
		}

		/* (non-Javadoc)
		 * @see android.os.AsyncTask#doInBackground(Params[])
		 */
		@Override
		protected String doInBackground(String... params) {

			String resultado = new String();
			String METHOD_NAME = "updatePedido";
			String SOAP_ACTION = NAMESPACE +"/" +METHOD_NAME;
			SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
			SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
			soapEnvelope.dotNet = true;
			soapEnvelope.implicitTypes = true;
			soapEnvelope.setOutputSoapObject(request);

			request.addProperty("jsonPelicula", params[0]);

			HttpTransportSE aht = new HttpTransportSE(URL);

			try {
				aht.call(SOAP_ACTION, soapEnvelope);
				SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse();
				resultado = resultString.toString();

			} catch (IOException e) {
				e.printStackTrace();
			} catch (XmlPullParserException e) {
				e.printStackTrace();
			}

			return resultado;
		}

		/* (non-Javadoc)
		 * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
		 */
		@Override
		protected void onPostExecute(String result) {
			super.onPostExecute(result);
			progressDialog.dismiss();
			//Valido que tenga la informacion necesaria
			if("1".equals(result)){
				Toast.makeText(UpdateEstadoActivity.this, "Ingresado correctamente", Toast.LENGTH_LONG).show();
				finish();
			}else{
				Toast.makeText(UpdateEstadoActivity.this, "Error al obtener la informacion necesaria", Toast.LENGTH_LONG).show();
				finish();
			}
		}
	}
	
}
